var form_abm = new Class({

	/*
	*Recorre el formulario y lo devuelve en un objeto
	*/
	 obtenerArregloForm: function(){
				var options = {}
				this.form.getFormElements().each(function(el){
						var name = el.name;
						var value = el.getValue();
						options[name] = value;
					});
				try {
   						if (FCKeditorAPI!=null) {
				 			 for (fckeditorName in FCKeditorAPI.__Instances){
								options[fckeditorName] = FCKeditorAPI.GetInstance(fckeditorName).GetXHTML() ;
						}
				}
				}catch(mierror){
						//alert('NO ESTA DEFINIDO  '+ mierror);
				} 
				return options;
		},
	
 	initialize: function(form, add,del,mod,arregloElemForm,myTable){
					this.form = $(form);
					this.arregloElemForm = arregloElemForm;
					
					this.scriptAdd = add.accion;
					this.botonAdd = add.nombre;
					this.capaAdd = add.capa;
					
					this.scriptDel = del.accion;
					this.botonDel = del.nombre;
					this.capaDel = del.capa;
					
					this.scriptModif = mod.accion;
					this.botonModif = mod.nombre;
					this.capaModi =  mod.capa;
					var myValidator= new fValidator($(form).name);
					
					//accionEliminar
					$(this.botonDel).addEvent('click', function() {
										
						if( confirm('Borrar  ? ')) {
							var log = $(this.capaDel).empty().addClass('ajax-loading');
							this.form.action = this.scriptDel;
							var miJSON = new Json.Remote(this.scriptDel ,{
						 		 onComplete: function(r){
								     log.removeClass('ajax-loading');
								      if(r.respuesta){
								      		myTable.delRow(fila);
								    		log.addClass('ok');
								           	log.setHTML(r.mensaje);
							 		 	   	}else{
							 		 	   		log.addClass('error');
						           			  	log.setHTML(r.mensaje);
							 		 	   	}
								  }
								});	
							 arreglo = this.obtenerArregloForm();
							 miJSON.send( Json.toString(arreglo ) );
							}
					}.bind(this));
					//accionModificar
					$(this.botonModif).addEvent('click', function(e) {
							arregloE = this.arregloElemForm;
							arregloO = this.obtenerArregloForm();
							new Event(e).stop();
							if(myValidator){ //Si las restricciones de los campos se cumplen*/
				       	 			 var log = $(this.capaModi).empty().addClass('ajax-loading');
									 var miJSON = new Json.Remote(this.scriptModif,{
						 					 onComplete: function(r){
								   				  log.removeClass('ajax-loading');
								    			  if(r.respuesta){
								    			  		//alert(myTable);
								           			 	myTable.modifiRow(fila,arregloElemForm);
									 		 	  		log.addClass('ok');
								           			  	log.setHTML(r.mensaje);
									 		 	   	}else{
									 		 	   		log.addClass('error');
								           			  	log.setHTML(r.mensaje);
									 		 	   	}
								  				}
									});	
							 miJSON.send( Json.toString(arregloO ) );
							}
						}.bind(this));
						//accionAgregar
						$(this.botonAdd).addEvent('click', function(e) {
						
							arregloE = this.arregloElemForm;
							arregloO = this.obtenerArregloForm();
							new Event(e).stop();
							if(myValidator.result){ //Si las restricciones de los campos se cumplen*/
				       	 			 var log = $(this.capaAdd).empty().addClass('ajax-loading');
									 var miJSON = new Json.Remote(this.scriptAdd,{
						 					 onComplete: function(r){
								   				  log.removeClass('ajax-loading');
								   				 
								   				   if(r.respuesta){
								   				   		//alert(arregloE);
								   				   		clave = r.id;
								   				   		//alert(Json.toString(clave));
								    			  		myTable.addRow(Json.toString(clave),arregloE);
								           			    clase='ok';
								           			  	log.setHTML(r.mensaje);
									 		 	   	}else{
									 		 	   		log.addClass('error');
								           			  	log.setHTML(r.mensaje);
								           			  	clase='error';
									 		 	   	}
									 		 	   	log.addClass(clase);
								  				}
									});	
							 miJSON.send( Json.toString(arregloO) );
							} 
						}.bind(this))
		

   } // initialize
   

});